

using namespace std;
#ifndef PROTOCOLO_H_
#define PROTOCOLO_H_

using namespace std;

#include "defines.h"
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>


//Estructura utilizada para almacenar los datos de cada elemento gráfico en pantalla
struct destinoSprite
 {
    unsigned char nombre; //Ids definidos en Define.h. Se utiliza para saber que sprite recortar en la imagen origen
    SDL_Rect destino; //Punto de ubicacion del elemento en pantalla
 };

/**
 * Struct que modela a un jugador dentro del torneo, se usa dentro de los structs
 * a enviar entre el servidor partida y torneo, tambien es el tipo de dato que usa
 * el servidor torneo para su lista de jugadores (disponibles o en partida).
 */
typedef struct {
    char      	nombre[MSJ_LENGHT];     //Nombre del cliente.
    int         socket_id;  //Socket donde esta conectado el cliente.
    short int    puntaje;    //Puntaje total.
    bool        conectado;  //Indica si el jugador sigue conectado.
    short int   ranking;    //Posicion en el torneo.
} t_jugador;

/**
 * Struct a enviar entre el servidor partida y torneo, para actualizar
 * los datos de la partida y sus jugadores.
 */
typedef struct {
    t_jugador     jugador1;   //Datos del jugador1.
    t_jugador     jugador2;   //Datos del jugador2.
    long int    partidaId;  //Id de la partida, dentro del torneo.
    bool        activo;  //Bool que indica si sigue activo.
} t_partida;


/**
 * Struct a enviar de los jugadores al servidor partida, para ejecutar una accion
 */
typedef struct {
    short int id_accion;
    short int id_entidad;
    short int mov_x;
    short int mov_y;
    char msj[MSJ_LENGHT];
} t_accion;

#endif /* PROTOCOLO_H_ */
